home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
User's Choice Windows CD
/
User's Choice Windows CD (CMS Software)(1993).iso
/
win_m_p
/
pwez51.zip
/
DEMPART2.BAS
< prev
next >
Wrap
BASIC Source File
|
1992-04-01
|
9KB
|
241 lines
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
'!!! THIS MODULE WILL NOT OPERATE AS A STAND-ALONE PROGRAM. IT MUST BE !!!
'!!! LOADED WITH MODULE DEMO.BAS. DEMO.BAS MUST BE THE MAIN MODULE.... !!!
'!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
DECLARE FUNCTION COL% (C%)
DECLARE SUB CHNGPULL (BAR%, WIND%, ATTR%)
DECLARE SUB CHNGWIND (W%)
DECLARE SUB CLRWIND ()
DECLARE SUB DELWIND (W%)
DECLARE SUB DISKSIZE (DISK%, DISKSZE&, FREESPACE&)
DECLARE SUB DOSOUND ()
DECLARE SUB FINDPATH (PATH$)
DECLARE SUB FINDDIR (PATH$, TYPE$, F%)
DECLARE SUB GETANS (TEXT$, CHOICE$, ANS$, TR%, LC%, ATTR%, BORDER%)
DECLARE SUB GETDISK (DR%)
DECLARE SUB INFOFIXED (FIXED$)
DECLARE SUB INFOLINE (TR%, LC%, WD%, ATTR%)
DECLARE SUB INPTINIT (DTYPE%, ISDOT%, INPTEXIT$)
DECLARE SUB INPTWIND (PROMPT$, CODE$, TR%, LC%, WD%, ATTR%, RESTRICT$, RTRN$, RK%, BRD%)
DECLARE FUNCTION KEYMOUSE% ()
DECLARE SUB LINEW (ROW%, TYP%)
DECLARE SUB MAKEWIND (W%, LABEL$, TR%, LC%, WD%, NR%, ATTR%, BORDER%)
DECLARE FUNCTION MARKED% (RTRN$, START%)
DECLARE SUB MBUTTONS (LBUTTON%, RBUTTON%)
DECLARE SUB MOUSEON (ONFLAF%)
DECLARE SUB MULTINPT (SCRN%, FLD%, EXIT$, AUTOEXIT%, RKEY%, RTRN$())
DECLARE SUB NEWCOLOR (ATTR%)
DECLARE SUB PRESCRL (EXIT$, MARK$, TAGCOL%)
DECLARE SUB PRINTINFO (I$)
DECLARE SUB PRINTW (TEXT$, TR%, LC%)
DECLARE SUB PULLDOWN (INFO$(), A%, B%, EXIT$, RKEY%, ATTR%, HATTR%, BORDER%)
DECLARE SUB RESAVE ()
DECLARE SUB RSTRINFO (DELFLAG%)
DECLARE SUB RSTRINPT (DELFLAG%)
DECLARE SUB RSTRPULL (RSTRMBAR%)
DECLARE SUB RSTRWIND (W%, DELFLAG%)
DECLARE SUB SAVEWIND (W%, TR%, LC%, WD%, NR%)
DECLARE SUB SCRLWIND (LIST$(), INFO$(), TOPLINE$, ENTRIES%, RTRN$, RTRN%, LI%, FC%, RKEY%, HIATTR%)
DECLARE SUB SETDISK (DRIVE%, BADFLAG%)
DECLARE SUB SETINPT (SCRN%, WD%, EXIT$, INPT%(), INPT$(), BACKCOL%)
DECLARE SUB SETPULL (TR%, LC%, WD%, PWIND$())
DECLARE SUB SETWIND (FAST%, SND%, SHADCOL%)
DECLARE FUNCTION WAVAIL% (W%)
DECLARE SUB WINDSTATUS ()
DECLARE SUB SETSCRL (ARROW%, NOHI%, TAGCOLOR%)
SUB GETANSDEMO
A% = COL%(80) ' COLOR/GRAY PURPLE OR B/W
' MAKE WINDOW 1 AND PRINT IN SAME.
MAKEWIND 1, "@***** Get Answer Window Demonstration *****", 4, 100, 72, 9, A%, 132
PRINTW "Get answer windows are used to ask a question and wait for a single", 1, 100
PRINTW "key response. They can also be used to pause a program and wait for", 2, 100
PRINTW "any key to be pressed. Prompts may be windowed or un-windowed. The", 3, 100
PRINTW "area under the prompt or window is restored on exit. If the response", 4, 100
PRINTW "is displayed, ENTER must be pressed to accept it....", 5, 2
' GETANS IS NOT WINDOWED AS LAST ARGUMENT ( BORDER ) = 0. "A", "B", "C"
' OR ESC ARE VALID RESPONSES.
PRINTINFO (" Press A, B or C....")
ANS$ = ""
GETANS "[ Press A,B or C to continue.. ]", "ABC", ANS$, 12, 100, 240, 0
IF ANS$ = CHR$(27) THEN GOTO ENDGET ' ESC EXITS
' GETANS IS WINDOWED AS LAST ARGUMENT ( BORDER ) = 32. "Y", "N" OR ESC
' ARE VALID RESPONSES.
PRINTINFO " Press Y or N...."
ANS$ = ""
GOSUB GETANSWER
IF ANS$ = CHR$(27) THEN GOTO ENDGET
RSTRWIND 2, 1
PRINTINFO " Press Y or N. Press ENTER to accept...."
ANS$ = "N": S$ = " "
GOSUB GETANSWER
IF ANS$ = CHR$(27) THEN GOTO ENDGET
' GETANS IS WINDOWED AS LAST ARGUMENT ( BORDER ) = 32. ANY KEY EXITS.
ENDGET:
RSTRWIND 2, 1 ' RESTORE WINDOWS BEFORE EXIT.
RSTRWIND 1, 1
EXIT SUB
GETANSWER:
IF A% = 80 THEN B% = 1080 ELSE B% = 15
GETANS "Are you sure? (Y/N)" + S$, "YN", ANS$, 15, 100, B%, 32
IF ANS$ = CHR$(27) THEN RETURN
IF ANS$ = "Y" THEN TEMP$ = "YES" ELSE TEMP$ = "NO"
MAKEWIND 2, "", 15, 28, 25, 3, A%, 32
PRINTW "Your reply was: " + TEMP$, 1, 100
PRINTINFO " Press any key...."
GETANS "Press any key...", "", "", 20, 100, A% + 128, 32
RETURN
END SUB
SUB PRINTDEMO
' MAKE TWO WINDOWS AND PRINT IN EACH ONE.
A% = COL%(112)
MAKEWIND 1, "@Window #1", 4, 6, 30, 15, A%, 142
PRINTW "(*** SAMPLE ****)", 11, 100
B% = 71: IF A% = 15 THEN B% = 112
MAKEWIND 2, "@Window #2", 4, 45, 30, 15, B%, 142
PRINTW "(*** SAMPLE ****)", 11, 100
GA$ = "to print in Window #1."
GOSUB Press
CHNGWIND 1 ' MAKE WINDOW 1 ACTIVE.
PRINTW " Text can be printed in", 2, 3 ' PRINT IN WINDOW 1.
PRINTW "multiple windows. WIND-", 3, 3 '
PRINTW "OWS R-E-Z remembers the", 4, 3 '
PRINTW "color of text printed in", 5, 3 '
PRINTW "the window and uses the", 6, 3 '
PRINTW "same color the next time", 7, 3 '
PRINTW "text is printed.", 8, 3 '
GA$ = "to print in Window #2." ' INSTRUCTIONS FOR SUB Press
GOSUB Press
CHNGWIND 2 ' MAKE WINDOW 2 ACTIVE.
PRINTW "* Text can be centered *", 1, 100 ' PRINT IN WINDOW 2.
PRINTW "CENTERED TEXT", 2, 100 '
PRINTW "Single or double lines can", 4, 2 '
PRINTW "be printed................", 5, 2 '
LINEW 6, 1 ' SINGLE LINE IN ROW 6
LINEW 7, 2 ' DOUBLE LINE IN ROW 7
PRINTW "A window's interior can be", 8, 2 '
PRINTW "cleared with any color....", 9, 2 '
GA$ = "to clear Window #1 with a new color."
GOSUB Press
B% = 95: IF A% = 15 THEN B% = 112 ' FOR A NEW COLOR.
CHNGWIND 1 ' MAKE WINDOW 1 ACTIVE.
NEWCOLOR B% ' CHANGE COLOR FOR WINDOW 1
CLRWIND ' CLEAR WIND. 1 WITH NEW COLOR
PRINTW "(* New print-to color *)", 11, 100 ' PRINT WITH NEW COLOR
GA$ = "to print in Window #1 with the new print-to color."
GOSUB Press
PRINTW "When a window is cleared", 2, 3 ' PRINT IN WIND. 1 WITH NEW COLOR
PRINTW "The color of text subse-", 3, 3
PRINTW "quently printed, matches", 4, 3
PRINTW "the print-to color speci-", 5, 3
PRINTW "ied when the window was", 6, 3
PRINTW "cleared.", 7, 3
GA$ = "to print in Window #1 with another new color."
GOSUB Press
B% = 92: IF A% = 15 THEN B% = 7
NEWCOLOR B% ' CHANGE COLOR IN WINDOW 1.
PRINTW "The text's color can be", 8, 100 ' PRINT IN SAME.
PRINTW "changed at any time !!!!", 9, 100
GA$ = "....."
GOSUB Press
RSTRWIND 1, 1: RSTRWIND 2, 1
EXIT SUB
Press:
PRINTINFO " DIRECTIONS: Press any key " + GA$ ' PRINT IN INFO-LINE.
K% = KEYMOUSE% ' WAIT FOR ANY KEY.
RETURN
END SUB
SUB WINDOWDEMO
RSTRINFO 0 ' RESTORE INFO-LINE & KEEP ACTIVE.
A% = COL%(71) ' RED/GRAY OR B/W
' MAKE INSTRUCTION WINDOW
MAKEWIND 20, "@*** Window Demonstration Instructions ***", 2, 100, 72, 10, A%, 111
PRINTW "Window memory is dynamically allocated and returned to BASIC when a", 1, 3
PRINTW "window is restored. Up to 20 windows may be stacked and restored.", 2, 3
PRINTW "Window memory is outside of BASIC's normal 64K storage area. Press", 3, 3
PRINTW "the UP ARROW or move the MOUSE up to create windows at random loca-", 4, 3
PRINTW "tions. Press the DOWN ARROW or move the MOUSE down to remove the", 5, 3
PRINTW "windows. Press ESC to exit. ( NOTE: This is window number 20 )", 6, 3
RANDOMIZE TIMER ' RESET RANDOM SEED
WIND% = 0 ' WINDOW COUNTER
GETMAKE:
TR% = INT(11 * RND + 12) ' GET RANDOM VALUE FOR TOP ROW
LC% = INT(60 * RND + 3) ' GET RANDOM VALUE FOR LEFT COLUMN
NR% = INT((25 - TR% - 3) * RND + 3) ' GET RANDOM VALUE FOR NUMBER ROWS
WI% = INT((80 - LC% - 16) * RND + 16) ' GET RANDOM VALUE FOR WIDTH
BO% = INT((2) * RND + 100) + 1 ' GET RANDOM VALUE FOR BORDER
' WAIT FOR ARROW KEY, ESC, OR MOUSE MOVEMENT WITH FUNTION KEYMOUSE.
SELECT CASE KEYMOUSE%
CASE 27 ' ESC
FOR XX% = 19 TO 1 STEP -1
RSTRWIND XX%, 1 ' RESTORE ALL WINDOWS.
NEXT
RSTRWIND 20, 1
EXIT SUB ' EXIT
CASE 18432 ' UP ARROW - MAKE WINDOWS
IF WIND% < 19 THEN
WIND% = WIND% + 1 ' INCREMENT COUNTER
A% = WIND% * 16: IF A% = 128 OR A% = 256 THEN A% = 135 ' SET COLORS
IF A% > 127 THEN A% = A% - 128 '
A% = COL(A%) '
IF A% = 15 THEN IF WIND% / 2 <> INT(WIND% / 2) THEN A% = 112 ' B/W
IF NR% < 8 OR BO% = 100 THEN BO% = BO% - 100 ' BORDER
MAKEWIND WIND%, "@Demo Window" + STR$(WIND%), TR%, LC%, WI%, NR%, A%, BO%
ELSE
DOSOUND
END IF
CASE 20480 ' DOWN ARROW RESTORE WINDOWS.
IF WIND% > 0 THEN
RSTRWIND WIND%, 1
WIND% = WIND% - 1 ' DECREMENT COUNTER
ELSE
DOSOUND
END IF
CASE ELSE
END SELECT
GOTO GETMAKE
END SUB